package d_interface;

import java.util.Comparator;

/**
 * 学生类，实现了Comparable接口用于比较学生分数。
 * @author Cheng-02
 * @version V1.0
 * @Package c_interface
 * @date 2024/4/1 下午1:27
 */
public class Student implements Comparator {
    private String name; // 学生姓名
    private int score; // 学生分数

    /**
     * 无参构造函数，创建一个空的学生对象。
     */
    public Student() {
    }

    /**
     * 带参数的构造函数，用于初始化学生对象。
     * @param name 学生的姓名
     * @param score 学生的分数
     */
    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }

    /**
     * 获取学生的姓名。
     * @return 返回学生的姓名。
     */
    public String getName() {
        return name;
    }

    /**
     * 设置学生的姓名。
     * @param name 要设置的学生姓名。
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取学生的分数。
     * @return 返回学生的分数。
     */
    public int getScore() {
        return score;
    }

    /**
     * 设置学生的分数。
     * @param score 要设置的学生分数。
     */
    public void setScore(int score) {
        this.score = score;
    }

    /**
     * 重写toString方法，用于返回学生对象的字符串表示。
     * @return 返回格式化的学生信息字符串。
     */
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", score=" + score +
                '}';
    }

/*
* o1代表student[i]，o2代表student[i+1]
* //- o1对象减o2大于0返回正整数
  //- o1对象减o2小于0返负整数
  //- o1对象减o2等于0返回零
* 返回值大于0表示o1大于o2，返回值小于0表示o1小于o2，返回值等于0表示o1等于o2
* */

    @Override
    public int compare(Object o1, Object o2) {
        Student s1 = (Student) o1;
        Student s2=(Student) o2;
        return s1.getScore()-s2.getScore();
        //- o1对象减o2大于0返回正整数
        //- o1对象减o2小于0返负整数
        //- o1对象减o2等于0返回零
    }

}
